import { NestFactory } from '@nestjs/core';
import helmet from 'helmet';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
import { HttpExceptionFilter } from './common/filter/http-exception.filter';
import { AllExceptionsFilter } from './common/filter/all-exceptions.filter';
import { baseUrl } from './util/constants';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.enableCors(); // 一键开启跨域
  // 全局
  app
    .use(helmet()) // Helmet可以通过适当设置HTTP标头来帮助保护您的应用程序免受一些众所周知的Web漏洞的侵害。
    .setGlobalPrefix(baseUrl)
    .useGlobalPipes(
      new ValidationPipe({
        whitelist: true, // 如果传入了其他属性,但是参数上并没有这个属性,就会跳过
        transform: true, // 根据参数类型自动转换
      }),
    )
    .useGlobalFilters(new AllExceptionsFilter())
    .useGlobalFilters(new HttpExceptionFilter());
  await app.listen(3000);
}

bootstrap().then(() => {
  console.log('项目启动了:http://localhost:3000');
});
